/*
 * Copyright (c) 2024 iSoftStone Education Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef __SMART_HOME_H__
#define __SMART_HOME_H__

#include <stdint.h>
#include <stdbool.h>
#include "wifi_tcp.h"

void i2c_dev_init(void);
void bh1750_read_data(double *dat);
void sht30_read_data(double *temp, double *humi);

void lcd_dev_init(void);                                        // 初始化LCD
void smart_home_key_process(int key_no);                        // 按键处理函数
void smart_home_iot_cmd_process(int iot_cmd);                   // 物联网指令处理函数
void smart_home_su03t_cmd_process(int su03t_cmd);               // 语音管家指令处理函数
void smart_home_ppm_alarm_process(tcp_alarm_t *alarm);          // PPM报警处理
void smart_home_illumination_alarm_process(tcp_alarm_t *alarm); // 光照报警处理
void lcd_show_ui(void);                                         // 加载LCD UI
void lcd_set_temperature(double temperature);                   // 设置温度显示
void lcd_set_humidity(double humidity);                         // 设置湿度显示
void lcd_set_illumination(double illumination);                 // 设置光照强度显示
void lcd_set_ppm(double ppm);                                   // 设置PPM显示
void lcd_set_network_state(int state);                          // 设置网络状态
void lcd_set_light_state(bool state);                           // 设置灯状态显示
void lcd_set_motor_state(bool state);                           // 设置电机状态显示
void lcd_set_auto_state(bool state);                            // 设置自动模式状态显示
void lcd_set_alarm_state(int state);                            // 设置报警状态
unsigned int auto_is_connected(void);                           // 获取自动模式状态
void __set_auto_state(int state);                               // 设置自动模式状态（内部使用）

// void light_dev_init(void);
// void light_set_pwm(unsigned int duty);
// void light_set_state(bool state);

// void motor_dev_init(void);
// void motor_set_pwm(unsigned int duty);
// void motor_set_state(bool state);
// void lcd_dev_init(void);                        // 初始化LCD设备，设置必要的参数和状态
// void lcd_show_ui(void);                         // 显示用户界面（UI）到LCD屏幕上
// void lcd_set_temperature(double temperature);   // 设置并显示温度值到LCD屏幕
// void lcd_set_humidity(double humidity);         // 设置并显示湿度值到LCD屏幕
// void lcd_set_illumination(double illumination); // 设置并显示光照强度值到LCD屏幕
// void lcd_set_light_state(bool state);           // 设置并显示灯光的状态（开或关）到LCD屏幕
// void lcd_set_motor_state(bool state);           // 设置并显示电机的状态（开或关）到LCD屏幕
// void lcd_set_auto_state(bool state);            // 设置并显示自动模式的状态（开或关）到LCD屏幕
// void __set_auto_state(int state);               // 设置自动状态
// unsigned int auto_is_connected(void);
// void smart_home_su03t_cmd_process(int su03t_cmd); // 处理来自SU03T设备的命令，执行相应的操作
// void smart_home_iot_cmd_process(int iot_cmd);     // 处理来自IoT设备的命令，执行相应的操作
// void smart_home_key_process(int key_no);          // 处理按键输入，根据按键编号执行相应的操作
// void smart_home_ppm_alarm_process(tcp_alarm_t *alarm);
// void smart_home_illumination_alarm_process(tcp_alarm_t *alarm);
// void smart_home_key_press_process(uint8_t key_no);

#endif
